<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="ToaB1" id="ToaB1"><span data-lake-id="u432e7d9d" id="u432e7d9d">典型回答</span></h1>
  <p data-lake-id="u04734df1" id="u04734df1"><br></p>
  <p data-lake-id="u9b0ca15f" id="u9b0ca15f"><span data-lake-id="u42aca7f9" id="u42aca7f9">Sorted Set 能支持范围查询，这是因为它的核心数据结构设计采用了跳表，而它又能O(1)的复杂度获取元素权重，这是因为它同时采用了哈希表进行索引。</span></p>
  <p data-lake-id="u5a517cb0" id="u5a517cb0"><span data-lake-id="u64934970" id="u64934970">​</span><br></p>
  <pre lang="java"><code>
typedef struct zset 
{ 
    dict *dict; 
    zskiplist *zsl;
} zset;
</code></pre>
  <p data-lake-id="u6c66bc1e" id="u6c66bc1e"><br></p>
  <p data-lake-id="u71e6d57b" id="u71e6d57b"><span data-lake-id="u1d9c728c" id="u1d9c728c">以上是zset的数据结构，其中包含了两个成员，分别是哈希表dict和跳表zsl。</span></p>
  <p data-lake-id="u6984e813" id="u6984e813"><span data-lake-id="ucf3387c3" id="ucf3387c3">​</span><br></p>
  <p data-lake-id="u67f50276" id="u67f50276"><span data-lake-id="ueb4410b6" id="ueb4410b6">dict存储 member-&gt;score 之间的映射关系，所以 ZSCORE 的时间复杂度为 O(1)。skiplist 是一个「有序链表 + 多层索引」的结构，查询元素的复杂度是 O(logN)，所以他的查询效率很高。</span></p>
 </body>
</html>